package unrn.isiii.bean.rest;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import unrn.isiii.dao.ILineaDao;
import unrn.isiii.dao.IPuntoDao;
import unrn.isiii.dao.IRecorridoDao;
import unrn.isiii.dao.IUsuarioDao;
import unrn.isiii.model.Punto;
import unrn.isiii.model.Recorrido;
import unrn.isiii.service.ws.LineaEndPoint;
import unrn.isiii.service.ws.Message;

@Component
@Path("/simular")
public class SimulartService {

	@Autowired
	ILineaDao iLineaDao;
	@Autowired
	IUsuarioDao iUsuarioDao;
	
	@Autowired
	private IRecorridoDao iRecorridoDao;
	@Autowired
	private IPuntoDao  iIPuntoDao;

	
	@GET
	@Path("/{linea}")
	@Produces(MediaType.APPLICATION_JSON)
	public Message consulta( @PathParam("linea") String linea) {
		try {
			if (getiLineaDao().findByNombre(linea) != null) {
				String usuario = getiUsuarioDao().findAll().get(0).getUsuarname();
				
				Recorrido recorrido = iRecorridoDao.recorridoByLinea(linea).get(0);
				
				for (Punto punto : recorrido.getPuntos()) {
					LineaEndPoint.sendLinea(new Message(usuario, linea, linea, punto.getCoordenada().getLatitud(),	punto.getCoordenada().getLongitud()));
					Thread.sleep(10000);
				}
				
				
				return (new Message(usuario, linea, linea, 0D, 0D));
			} else
				return new Message("", linea, "No existe Linea", 0D, 0D);

		} catch (Exception e) {
			return new Message("", linea, "No existe Linea o Usuario",	0D, 0D);
		}

	}

	public ILineaDao getiLineaDao() {
		return iLineaDao;
	}

	public void setiLineaDao(ILineaDao iLineaDao) {
		this.iLineaDao = iLineaDao;
	}

	public IUsuarioDao getiUsuarioDao() {
		return iUsuarioDao;
	}

	public void setiUsuarioDao(IUsuarioDao iUsuarioDao) {
		this.iUsuarioDao = iUsuarioDao;
	}

}